系统城装机大师 - 固镇县祥瑞电脑科技销售部宣传站!

当前位置:首页 > 脚本中心 > linux shell > 详细页面

shell脚本实现公司项目部署交付环境预检查的思路

时间:2020-10-11来源:www.pcxitongcheng.com作者:电脑系统城

大型项目环境预检查脚本,根据自己实际情况修改脚本中变量,给大家一个思路,转载请注明出处~

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
#!/usr/bin/env bash
root=$(
  cd $(dirname $0)
  pwd
)
 
source "$root"/dragonrc
 
CPU=$(echo "`cat /proc/cpuinfo | grep "physical id" | uniq | wc -l`H")
MEM=$(echo "$((`cat /proc/meminfo | grep MemTotal |awk '{print $2}'` / 1000000))G")
TIME=$(date)
 
rpm -q ansible &> /dev/null
 
if [ $? -ne 0 ];then
    sh ${root}/scripts/install_ansible.sh &> /dev/null
fi
 
HINT(){
    read -p "请按回车继续:"
}
 
COPY_KEY(){
    echo
    echo
sh ${root}/scripts/copy-key.sh
    echo
    echo
 
}
 
CK_UMASK(){
UMASK_NUM=$(ansible dragon -m shell -a "umask"|grep 0022|wc -l)
ALL_HOSTS=$(echo "${ALL_NODES}"|awk -F"," '{for(i=1;i<=NF;i++) print $i}'|wc -l)
    echo
    echo -e "\033[5;32;31m正在为您检测umask值,请耐心等待。。。\033[0m"
    echo
    if [ ${UMASK_NUM} -ne ${ALL_HOSTS} ];then
        echo -e "\033[1;32;31m检测到节点umask值非022,将为您执行修改操作!\033[0m"
        sleep 3
            ansible dragon -m shell -a "sed -i 's/^.*umask.*/umask 022/g' /etc/profile"
            ansible dragon -m shell -a "source /etc/profile"
            ansible dragon -m shell -a "sed -i 's/^.*umask.*/umask 022/g' /etc/bashrc"
            ansible dragon -m shell -a "source /etc/bashrc"
        echo -e "\033[1;32;31m-------------------------------以下为各节点umask值-------------------------------\033[0m"
            ansible dragon -m shell -a "umask"
        echo -e "\033[1;32;31m提示:如果以上返回结果非0022,那就是自动设置失败,请手动调整umask值!\033[0m"
    else
clear
        echo -e "\033[1;32;31m所有节点umask值全部为022\033[0m"
echo
    fi
}
CK_NETWORK_NAME(){
    echo
    echo -e "\033[1;32;31m-------------------------------检测所有节点主机网卡名-------------------------------\033[0m"
    IFS=',' read -r -a nodes <<<"${ALL_NODES}"
    for p in "${nodes[@]}"; do
    echo
    ssh -q -o 'StrictHostKeyChecking no' -o 'UserKnownHostsFile /dev/null' -T $p ip addr |grep $p | awk '{print $2,$7}'
    echo
    done
    echo -e "\033[1;32;35m提示:请您把网卡名复制到dragonrc配置~\033[0m"
    echo -e "\033[1;32;31m-------------------------------以上为所有节点主机网卡名-------------------------------\033[0m"
    echo
}
CK_HOST_NAME(){
    echo
    echo -e "\033[1;32;31m-------------------------------检测所有节点主机名-------------------------------\033[0m"
    ansible dragon -m shell -a "hostname"
            echo -e "\033[1;32;31m提示:检查主机名,不能是出现大写或特殊符号~\033[0m"
    echo -e "\033[1;32;31m-------------------------------以上为所有节点主机名-------------------------------\033[0m"
    echo
}
CK_HOSTS(){
    echo
    echo -e "\033[1;32;31m-------------------------------检测所有节点Hosts配置-------------------------------\033[0m"
    sh ${root}/scripts/hostname.sh
    echo -e "\033[1;32;31m-------------------------------以上为所有节点Hosts配置-------------------------------\033[0m"
    echo
}
CK_TIME(){
    echo
    echo -e "\033[1;32;31m----------------------------------检测所有节点时间----------------------------------\033[0m"
    ansible dragon -m shell -a "date"
    echo -e "\033[1;32;35m提示:误差为1~2秒为正常情况,如差距太大则需要做ntpd时间同步~\033[0m"
    echo -e "\033[1;32;31m----------------------------------以上为所有节点时间----------------------------------\033[0m"
    echo
}
CK_DISK(){
    echo
    echo -e "\033[1;32;31m----------------------------------检测所有节点磁盘挂载----------------------------------\033[0m"
    ansible dragon -m shell -a "df -h"
    echo -e "\033[1;32;31m----------------------------------以上为所有节点磁盘挂载----------------------------------\033[0m"
    echo
}
CK_SYSTEM(){
    echo
    echo -e "\033[1;32;31m----------------------------------检测所有节点系统版本信息----------------------------------\033[0m"
    ansible dragon -m shell -a "cat /etc/redhat-release"
    echo -e "\033[1;32;31m----------------------------------以上为所有节点系统版本信息----------------------------------\033[0m"
    echo
}
CK_FIREWALLD(){
    echo
    echo -e "\033[1;32;31m----------------------------------检测所有节点防火墙是否关闭----------------------------------\033[0m"
    ansible dragon -m shell -a "firewall-cmd --state"
    echo -e "\033[1;32;35m提示:如果发现防火墙状态为Running,不用担心,all_sh.sh环境初始化配置已经配好永久关闭哦~\033[0m"
    echo -e "\033[1;32;31m----------------------------------以上为所有节点防火墙状态信息----------------------------------\033[0m"
    echo
}
CK_SELINUX(){
    echo
    echo -e "\033[1;32;31m----------------------------------检测所有节点SELINUX是否关闭----------------------------------\033[0m"
    ansible dragon -m shell -a "sestatus"
    echo -e "\033[1;32;35m提示:如果发现状态为enabled,不用担心,all_sh.sh环境初始化配置已经配好永久关闭哦~\033[0m"
    echo -e "\033[1;32;31m----------------------------------以上为所有节点SELINUX状态信息----------------------------------\033[0m"
    echo
}
while true
do
    clear
    echo "-------------------------------------------------------"
    echo "|                           |"
    echo "|       XXXXXXXXXXX部署预检查环境        |"
    echo "|                           |"
    echo "-------------------------------------------------------"
    echo "   ***** 检测到您的机器配置为:${CPU} ${MEM}  ***** "
    echo "-------------------------------------------------------"
    echo "|        1. 一键SSH免密互信          |"
    echo "|        2. 检查各节点主机umask        |"
    echo "|        3. 检查各节点网卡名          |"
    echo "|        4. 检查各节点主机名          |"
    echo "|        5. 检查各节点hosts配置        |"
    echo "|        6. 检查各节点主机时间         |"
    echo "|        7. 检查各节点主机磁盘挂载       |"
    echo "|        8. 检查各节点主机系统版本       |"
    echo "|        9. 检查各节点防火墙是否关闭      |"
    echo "|       10. 检查各节点SELINUX是否关闭     |"
    echo "-------------------------------------------------------"
    echo
    echo "  // 当前时间:${TIME} //"
    echo
    read -p "请您选择[1-10/q退出]选项:" THING
case $THING in
       1)
       COPY_KEY
       HINT
       ;;
       2)
       CK_UMASK
       HINT
       ;;
       3)
       CK_NETWORK_NAME
       HINT
       ;;
       4)
       CK_HOST_NAME
       HINT
       ;;
       5)
       CK_HOSTS
       HINT
       ;;
       6)
       CK_TIME
       HINT
       ;;
       7)
       CK_DISK
       HINT
       ;;
       8)
       CK_SYSTEM
       HINT
       ;;
       9)
       CK_FIREWALLD
       HINT
       ;;
       10)
       CK_SELINUX
       HINT
       ;;
       q)
       exit
       ;;
       *)
       read -p "请您选择[1-10/q退出],输入回车继续:"
       ;;
       esac
done

到此这篇关于shell脚本实现公司项目部署交付环境预检查的思路的文章就介绍到这了,更多相关shell脚本部署交付环境内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

分享到:

相关信息

系统教程栏目

栏目热门教程

人气教程排行

站长推荐

热门系统下载